package com.demo.java.OD151_200.OD170;

import java.util.Scanner;
import java.util.function.Consumer;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【旋转骰子】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/145781979
 */
public class OdMain {
    static StringBuilder res = new StringBuilder("123456");  // 初始化正方体的状态

    public static void main(String[] args) {
        try (Scanner s = new Scanner(System.in)) {
            String line = s.nextLine();  // 读取输入的指令
            solveMethod(line);  // 执行旋转操作
        }
    }

    private static void solveMethod(String line) {
        // 使用lambda表达式来定义每种旋转操作
        Consumer<Void>[] moveFunctions = new Consumer[128];
        moveFunctions['L'] = v -> roll(0, 2, 4, 6);  // 左旋转
        moveFunctions['R'] = v -> roll(4, 6, 0, 2);  // 右旋转
        moveFunctions['F'] = v -> roll(2, 4, 4, 6);  // 前旋转
        moveFunctions['B'] = v -> roll(4, 6, 2, 4);  // 后旋转
        moveFunctions['A'] = v -> roll(2, 4, 0, 2);  // 上旋转
        moveFunctions['C'] = v -> roll(0, 2, 2, 4);  // 下旋转

        // 执行输入的每一个操作
        for (int i = 0; i < line.length(); i++) {
            char c = line.charAt(i);
            if (moveFunctions[c] != null) {
                moveFunctions[c].accept(null);  // 执行旋转操作
            }
        }
        System.out.print(res);  // 输出最终状态
    }

    // 旋转操作，交换四个面的顺序
    private static void roll(int s1, int e1, int s2, int e2) {
        String tmp = new StringBuilder(res.substring(s1, e1))  // 获取要交换的部分
                .reverse().toString();  // 翻转这部分
        res.replace(s1, e1, res.substring(s2, e2))  // 将第二部分替换到第一部分
                .replace(s2, e2, tmp);  // 将翻转后的第一部分替换到第二部分
    }
}